namespace Microsoft.Robotics.Tracing
{
    using System;

    /// <summary>
    /// Trace dispatching interface. An instance of this interface is injected into the TraceOut static facade class
    /// and handles all of the user messages
    /// </summary>
    public interface ITraceDispatcher
    {
        /// <summary>
        /// Dispatch to all registered tracers. 
        /// </summary>
        /// <param name="level">Tracing level, i.e. Info, Warning, Error</param>
        /// <param name="context">Tracing context, i.e. logical component name</param>
        /// <param name="format">Format of the trace</param>
        /// <param name="args">The Arguments</param>
        void Dispatch(TraceContext level, TraceContext context, string format, params object[] args);
    }
}
